import scrapy
from scrapy_05_movie.items import Scrapy05MovieItem

class MovieSpider(scrapy.Spider):
    name = 'movie'
    allowed_domains = ['www.ygdy8.net']

    #注意https s不能少
    start_urls = ['https://www.ygdy8.net/html/gndy/china/index.html']

    def parse(self, response):
        #先验证一下是否可以
        # print('==============================')
        # 获取所需要电影名字和对应的对应图片地址
#         //div//table//a[2]    名字
#       //div/ul//a[2]/@href 对应的下一页包含图片的链接
        list=response.xpath('//div//table//a[2]')

        # 得到list后要遍历
        for li in list:
            name=li.xpath('./text()').extract_first()
            href=li.xpath('./@href').extract_first()
            # print(name,href)
            #我得到href的地址是： /html/gndy/dyzz/20211013/61930.html
            #需要与https://www.ygdy8.net拼接



            # 获取第二页的地址
            url='https://www.ygdy8.net'+href
            #meta的name就是电影名字  # 对第二页的链接发起访问
            #注意scrapy.Request中的meta参数是一个字典就是将这个函数中的变量传递到另外一个（类的）函数中
            yield scrapy.Request(url=url,callback=self.parseSecond,meta={'name':name})

    def parseSecond(self,response):
        # 注意 如果拿不到数据的情况下  一定检查你的xpath语法是否正确
        # url=response.xpath('//div/span/img/@src').extract_first()

        #注意span标签，识别不到
        url=response.xpath('//div//img/@src').extract_first()
        # 接受到请求的那个meta参数的值  （写的是字典的名字）
        name=response.meta['name']


        # 常见数据结构的实例化对象
        movie=Scrapy05MovieItem(name=name,pic_url=url)
        yield movie










